package logicaJogo;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;

public class Jogo extends Observable implements Serializable {

    private static final long serialVersionUID = 1L;
    private State estado_actual;
    private State ultimo_estado;
    private Jogador jogador1;
    private Jogador jogador2;
    private Jogador jogador3;
    private Jogador jogador4;
    private Jogador jogador5;
    private Jogador jogador_actual;
    private int[] dados10;
    private int dado6;
    private int[] opcoesDistrito = new int[5];
    private List<Carta> baralho = new ArrayList();
    private List<Carta> mesa = new ArrayList();
    private List<Recurso> recursos = new ArrayList();
    private boolean podeAvançar;
    private int controlo_cartas_baralhadas;

    public Jogo() {
        estado_actual = new Menu(this);
        carregarConfiguracoesInicio();
    }

    //MÉTODOS
    public void carregarConfiguracoesInicio() {
        baralho.clear();
        podeAvançar = false;
        controlo_cartas_baralhadas = 0;

        Recurso Joia = new Recurso("Joia", 1);
        Recurso Alimento = new Recurso("Alimento", 2);
        Recurso Madeira = new Recurso("Madeira", 3);
        Recurso Ferro = new Recurso("Ferro", 4);
        Recurso Utensilio = new Recurso("Utensilio", 5);
        Recurso Joker = new Recurso("Joker", 6);

        recursos.add(Joia);
        recursos.add(Alimento);
        recursos.add(Madeira);
        recursos.add(Ferro);
        recursos.add(Utensilio);
        recursos.add(Joker);

        baralho.add(new Carta("Moons", 1, LUA));
        baralho.add(new Carta("Suns", 1, SOL));
        baralho.add(new Carta("Waves", 1, ONDA));
        baralho.add(new Carta("Leaves", 1, FOLHA));
        baralho.add(new Carta("Wyrms", 1, DRAGAO));
        baralho.add(new Carta("Knots", 1, NO));
        baralho.add(new Carta("Author", 2, LUA, NO));
        baralho.add(new Carta("Desert", 2, SOL, DRAGAO));
        baralho.add(new Carta("Origin", 2, ONDA, FOLHA));
        baralho.add(new Carta("Painter", 3, SOL, NO));
        baralho.add(new Carta("Savage", 3, FOLHA, DRAGAO));
        baralho.add(new Carta("Journey", 3, LUA, ONDA));
        baralho.add(new Carta("Battle", 4, DRAGAO, NO));
        baralho.add(new Carta("Sailor", 4, ONDA, FOLHA));
        baralho.add(new Carta("Mountain", 4, LUA, SOL));
        baralho.add(new Carta("Discovery", 5, SOL, ONDA));
        baralho.add(new Carta("Soldier", 5, DRAGAO, NO));
        baralho.add(new Carta("Forest", 5, LUA, FOLHA));
        baralho.add(new Carta("Penitent", 6, SOL, DRAGAO));
        baralho.add(new Carta("Lunatic", 6, LUA, ONDA));
        baralho.add(new Carta("Market", 6, FOLHA, NO));
        baralho.add(new Carta("Castle", 7, SOL, NO));
        baralho.add(new Carta("Chance_Meeting", 7, LUA, FOLHA));
        baralho.add(new Carta("Cave", 7, ONDA, DRAGAO));
        baralho.add(new Carta("Betrayal", 8, DRAGAO, NO));
        baralho.add(new Carta("Diplomat", 8, LUA, SOL));
        baralho.add(new Carta("Mill", 8, ONDA, FOLHA));
        baralho.add(new Carta("Pact", 9, LUA, SOL));
        baralho.add(new Carta("Merchant", 9, FOLHA, NO));
        baralho.add(new Carta("Darkness", 9, ONDA, DRAGAO));
        baralho.add(new Carta("Consul", 10, LUA, ONDA, NO));
        baralho.add(new Carta("Rite", 10, LUA, FOLHA, DRAGAO));
        baralho.add(new Carta("Window", 10, SOL, FOLHA, NO));
        baralho.add(new Carta("Island", 10, SOL, ONDA, DRAGAO));
    }
}
